package com.example.automotive;

import android.os.Bundle;
import android.widget.Button;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import com.example.automotive.handler.CameraHandler;
import com.example.automotive.handler.SensorHandler;
import com.example.automotive.util.DataManager;

import java.util.HashMap;
import java.util.Map;


public class MainActivity extends AppCompatActivity {

    private CameraHandler cameraHandler; // 定义 CameraHandler 实例
//    private LocationHandler locationHandler; // 定义 LocationHandler 实例
    private SensorHandler sensorHandler; // 定义 SensorHandler 实例

    public Map<String, Object> sensorData = new HashMap<>(); // 定义传感器和位置数据映射表

//    public ONNXManager onnxManager;

    private DataManager dataManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) { // 当活动被创建时调用
        super.onCreate(savedInstanceState); // 调用父类的 onCreate 方法
        setContentView(R.layout.activity_main); // 设置活动的布局



        // 初始化相机、位置和传感器处理器
        cameraHandler = new CameraHandler(this); // 初始化 CameraHandler 实例
        sensorHandler = new SensorHandler(this); // 初始化 SensorHandler 实例
        dataManager = new DataManager("UpdateModel", this); // 初始化数据管理器
//        onnxManager = new ONNXManager(this);

        // 设置按钮点击事件监听器
        Button captureButton = findViewById(R.id.capture_button); // 获取布局中的按钮实例
        captureButton.setOnClickListener(v -> cameraHandler.takePhoto()); // 设置按钮的点击事件监听器

        // 加载 JNI 库
//        System.loadLibrary("onnxruntime4j_jni");
        // 下载模型文件
        dataManager.downloadModel();
//        onnxManager.runModel();

    }

    // 当权限请求结果返回时调用
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults); // 调用父类的 onRequestPermissionsResult 方法
        cameraHandler.onRequestPermissionsResult(requestCode, permissions, grantResults); // 将权限结果传递给 CameraHandler
//        locationHandler.onRequestPermissionsResult(requestCode, permissions, grantResults); // 将权限结果传递给 LocationHandler
    }

    @Override
    protected void onResume() { // 当活动恢复时调用
        super.onResume(); // 调用父类的 onResume 方法
        sensorHandler.registerListeners(); // 注册传感器监听器
    }

    @Override
    protected void onPause() { // 当活动暂停时调用
        super.onPause(); // 调用父类的 onPause 方法
        sensorHandler.unregisterListeners(); // 注销传感器监听器
    }


}
